﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls;
using PhoneAppSTS.Utils;
using STS.Model;
using PhoneAppSTS.StsService;

namespace PhoneAppSTS
{
    public partial class Survey : PhoneApplicationPage
    {
        private SurveyUtils surveyUtils;
        public Survey()
        {
            InitializeComponent();
            surveyUtils = new SurveyUtils();
            this.DataContext = surveyUtils;

            ModelInstance.BadaniaKrewViewModel.FindBadaniaKrewItems();
            ModelInstance.BadaniaMoczViewModel.FindBadaniaMoczItems();
            ModelInstance.BadaniaViewModel.FindBadaniaItems();

            if (ModelInstance.BadaniaKrewViewModel.BadaniaKrewItems.Count == 0)
            {
                surveyUtils.DownloadBadaniaKrwi(102);
            }
            else
            {
                ConvertTobadaniaKrew(ModelInstance.BadaniaKrewViewModel.BadaniaKrewItems[0]);
            }

            if (ModelInstance.BadaniaMoczViewModel.BadaniaMoczItems.Count == 0)
            {
                surveyUtils.DownloadBadaniaMoczu(102);
            }
            else
            {
                ConvertTobadaniaMocz(ModelInstance.BadaniaMoczViewModel.BadaniaMoczItems[0]);
            }

            if (ModelInstance.BadaniaViewModel.BadaniaItems.Count == 0)
            {
                surveyUtils.DownloadBadaniaOgolne(102);
            }
            else
            {
                ConvertTobadaniaOgolne(ModelInstance.BadaniaViewModel.BadaniaItems[0]);
            }
        }

        private void ConvertTobadaniaOgolne(Badania badaniaOgolne)
        {
            badania bd = new badania();
            bd.data = badaniaOgolne.DataBadania;
            bd.id_badania = badaniaOgolne.IdBadania;
            bd.id_lekarza = (int)badaniaOgolne.IdLekarza;
            bd.id_pacjenta = (int)badaniaOgolne.IdPacjenta;
            bd.nazwa_badania = badaniaOgolne.NazwaBadania;
            bd.opis_badania = badaniaOgolne.OpisBadania;
            surveyUtils.BadaniaOgolne = bd;
            DaneLekarzy dk = ModelInstance.DaneLekarzyViewModel.FindDaneLekarzyByIdDaneLekarzy(badaniaOgolne.IdLekarza);
            surveyUtils.Lekarz = dk.Imie + " " + dk.Nazwisko;
        }

        private void ConvertTobadaniaMocz(BadaniaMocz badaniaMoczu)
        {
            badania_mocz bm = new badania_mocz();
            bm.azotyny = badaniaMoczu.Azotyny;
            bm.barwa = badaniaMoczu.Barwa;
            bm.bialko = badaniaMoczu.Bialko;
            bm.bilirubina = badaniaMoczu.Bilirubina;
            bm.ciala_ketonowe = badaniaMoczu.CialaKetonowe;
            bm.ciezar_wl = (double)badaniaMoczu.CiezarWl;
            bm.data_badania = (DateTime)badaniaMoczu.DataBadania;
            bm.glukoza = badaniaMoczu.Glukoza;
            bm.id_lekarza = (int)badaniaMoczu.IdLekarza;
            bm.id_mocz = badaniaMoczu.IdMocz;
            bm.id_pacjenta = (int)badaniaMoczu.IdPacjenta;
            bm.leukocyty = (double)badaniaMoczu.Leukocyty;
            bm.nablonki_plaskie = badaniaMoczu.NablonkiPlaskie;
            bm.pasma_slizu = badaniaMoczu.PasmaSlizu;
            bm.ph = (double)badaniaMoczu.Ph;
            bm.przejrzystosc = badaniaMoczu.Przejrzystosc;
            bm.urobilinogen = badaniaMoczu.Urobilinogen;

            surveyUtils.BadaniaMoczu = bm;
            DaneLekarzy dk = ModelInstance.DaneLekarzyViewModel.FindDaneLekarzyByIdDaneLekarzy(badaniaMoczu.IdLekarza);
            surveyUtils.LekarzMocz = dk.Imie + " " + dk.Nazwisko;
        }

        private void ConvertTobadaniaKrew(BadaniaKrew badaniaKrwi)
        {
            badania_krew bk = new badania_krew();
            bk.bazocyty = (double)badaniaKrwi.Bazocyty;
            bk.data_badania = (DateTime)badaniaKrwi.DataBadania;
            bk.eozynocyty = (double)badaniaKrwi.Eozynocyty;
            bk.Hematokryt = (double)badaniaKrwi.Hematokryt;
            bk.Hemoglobina = (double)badaniaKrwi.Hemoglobina;
            bk.id_badania = badaniaKrwi.IdKrew;
            bk.id_lekarza = (int)badaniaKrwi.IdLekarza;
            bk.id_pacjenta = (int)badaniaKrwi.IdPacjenta;
            bk.kreatynina = (double)badaniaKrwi.Kreatynina;
            bk.limfocyty = (double)badaniaKrwi.Limfocyty;
            bk.MCH = (double)badaniaKrwi.MCH;
            bk.MCHC = (double)badaniaKrwi.MCHC;
            bk.MCV = (double)badaniaKrwi.MCV;
            bk.monocyty = (double)badaniaKrwi.Monocyty;
            bk.MPV = (double)badaniaKrwi.MPV;
            bk.neurocyty = (double)badaniaKrwi.Neurocyty;
            bk.NRBC = (double)badaniaKrwi.NRBC;
            bk.p_bazocyty = (double)badaniaKrwi.P_bazocyty;
            bk.p_eozynocyty = (double)badaniaKrwi.P_eozynocyty;
            bk.P_LCR = (double)badaniaKrwi.P_LCR;
            bk.p_limfocyty = (double)badaniaKrwi.P_limfocyty;
            bk.p_monocyty = (double)badaniaKrwi.P_monocyty;
            bk.p_neutrocyty = (double)badaniaKrwi.P_neutrocyty;
            bk.PCT = (double)badaniaKrwi.PCT;
            bk.PDW = (double)badaniaKrwi.PDW;
            bk.Plytki_krwi = (double)badaniaKrwi.PlytkiKrwi;
            bk.potas = (double)badaniaKrwi.Potas;
            bk.RBC = (double)badaniaKrwi.RBC;
            bk.RDW_CV = (double)badaniaKrwi.RDW_CV;
            bk.RDW_SD = (double)badaniaKrwi.RDW_SD;
            bk.WBC = (double)badaniaKrwi.WBC;

            surveyUtils.BadaniaKrwi = bk;
            DaneLekarzy dk = ModelInstance.DaneLekarzyViewModel.FindDaneLekarzyByIdDaneLekarzy(badaniaKrwi.IdLekarza);
            surveyUtils.LekarzKrew = dk.Imie + " " + dk.Nazwisko;
        }
    }
}